import axios from "axios"
import { ElMessageBox } from 'element-plus'
import router from "../router/index"
//配置axios
let http = axios.create({
    baseURL: "/api",
    timeout: 1000 * 10,
    withCredentials: true
})
//配置拦截器
//请求拦截器，所有的axios请求都会被拦截器拦截，可以通过拦截器添加额外的配置
http.interceptors.request.use(config => {
    //获取token
    let token = sessionStorage.getItem('my-token')
    config.headers.authorization=token
    return config
})

http.interceptors.response.use(config => {
    if (config.data.state) {
        return config
    } else {
        //不需要弹窗提示的路径
        let excludePaths = ["/sms/send"]
        //如果excludePath中不包含当前的响应路径，那么不需要弹窗
        if (!excludePaths.includes(config.config.url)) {
            //响应了错误
            ElMessageBox.alert(config.data.msg, "错误提示", { type: "error" })
        }
        //判断登入失效的情况 10022（登入状态过期） 1004（token失效了），是前后端约定的状态码，不是http状态码
        if(config.data.code == '10022'||config.data.code == '1004'){
            
            //退到登入页，然后清掉token
            sessionStorage.removeItem('my-token')
            router.push('/login')
            //刷新页面，清掉缓存
            location.reload()
        }
        return Promise.reject(config.data.msg)
    }

})
export default http